﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;

using FRL.DebtChased.Repository;
using FRLUser = FRL.DebtChased.Repository.User;

namespace FRL.DebtChased.Website
{

	/// <summary>
	/// Declaration of MyMembershipProvider class
	/// FRL DebtChased-specific implementation of a MembershipProvider
	/// </summary>
	public class MyMembershipProvider : MembershipProvider
	{

		/////////////////////////////////////////////////////////////
		// Construction

		public MyMembershipProvider()
		{

		}

		public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
		{

			// Call base-class function
			base.Initialize(name, config);

		}

		/////////////////////////////////////////////////////////////
		// Implementation of IMembershipService

		public override int MinRequiredPasswordLength
		{
			get { return 4; }
		}

		public override bool ValidateUser(string userName, string password)
		{

			// Declare return variable
			bool bFtmp = false;

			// look up user-details
			using (DebtChasedEntities ent = new DebtChasedEntities())
			{

				// Check repository
				bFtmp = FRLUser.DoesUserExist(ent, userName, password);

			}

			// Return variable
			return bFtmp;

		}

		/////////////////////////////////////////////////////////////
		#region Unimplemented functions

		public override bool ChangePassword(string username, string oldPassword, string newPassword)
		{
			throw new NotImplementedException();
		}

		public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
		{
			throw new NotImplementedException();
		}

		public override bool DeleteUser(string username, bool deleteAllRelatedData)
		{
			throw new NotImplementedException();
		}

		public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
		{
			throw new NotImplementedException();
		}

		public override string ApplicationName
		{
			get
			{
				throw new NotImplementedException();
			}
			set
			{
				throw new NotImplementedException();
			}
		}

		protected override byte[] DecryptPassword(byte[] encodedPassword)
		{
			return base.DecryptPassword(encodedPassword);
		}

		public override string Description
		{
			get
			{
				return base.Description;
			}
		}

		public override bool EnablePasswordReset
		{
			get { throw new NotImplementedException(); }
		}

		public override bool EnablePasswordRetrieval
		{
			get { throw new NotImplementedException(); }
		}

		protected override byte[] EncryptPassword(byte[] password)
		{
			return base.EncryptPassword(password);
		}

		protected override byte[] EncryptPassword(byte[] password, System.Web.Configuration.MembershipPasswordCompatibilityMode legacyPasswordCompatibilityMode)
		{
			return base.EncryptPassword(password, legacyPasswordCompatibilityMode);
		}

		public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
		{
			throw new NotImplementedException();
		}

		public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
		{
			throw new NotImplementedException();
		}

		public override int GetNumberOfUsersOnline()
		{
			throw new NotImplementedException();
		}

		public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
		{
			throw new NotImplementedException();
		}

		public override string GetUserNameByEmail(string email)
		{
			throw new NotImplementedException();
		}

		public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
		{
			throw new NotImplementedException();
		}

		public override MembershipUser GetUser(string username, bool userIsOnline)
		{
			throw new NotImplementedException();
		}

		public override bool UnlockUser(string userName)
		{
			throw new NotImplementedException();
		}

		public override string GetPassword(string username, string answer)
		{
			throw new NotImplementedException();
		}

		public override void UpdateUser(MembershipUser user)
		{
			throw new NotImplementedException();
		}

		public override string PasswordStrengthRegularExpression
		{
			get { throw new NotImplementedException(); }
		}

		public override int MinRequiredNonAlphanumericCharacters
		{
			get { throw new NotImplementedException(); }
		}

		public override string ResetPassword(string username, string answer)
		{
			throw new NotImplementedException();
		}

		public override MembershipPasswordFormat PasswordFormat
		{
			get { throw new NotImplementedException(); }
		}

		public override bool RequiresUniqueEmail
		{
			get { throw new NotImplementedException(); }
		}

		public override int MaxInvalidPasswordAttempts
		{
			get { throw new NotImplementedException(); }
		}

		public override int PasswordAttemptWindow
		{
			get { throw new NotImplementedException(); }
		}

		public override bool RequiresQuestionAndAnswer
		{
			get { throw new NotImplementedException(); }
		}

		#endregion Unimplemented functions

	}

}